Cryptology is a tool that relies on an algorithm and a key to protect information. The algorithm is a complex mathematical algorithm and the key is a string of bits. There are two basic types of cryptology systems: secret key systems and public key systems. A secret key system also referred to as a symmetric system has a single key (“secret key”) that is shared by two or more parties. The single key is used to both encrypt and decrypt information.
The Advanced Encryption Standard (AES), published by the National Institute of Standards and Technology (NIST) as Federal Information Processing Standard (FIPS) 197 is a secret key system. AES is a symmetric block cipher that can encrypt and decrypt information. The Groestl algorithm is an AES-based iterated hash function with a compression function built from two fixed, large, distinct permutations (P and Q).
The compression function (f) is defined via permutations of P and Q such that: f(h,m)=P(h XOR m) XOR Q(m) XOR h, where functions P and Q are permutation functions and hi-1 is an input state, mi is a message block input, and hi is a result state. Encryption (cipher) performs a series of transformations using the secret key (cipher key) to transform intelligible data referred to as “plaintext” into an unintelligible form referred to as “cipher text”. The transformations in the cipher include: (1) Adding a round constant (values derived from the P function and the Q function) to the state (a two dimensional array of bytes) using a Exclusive OR (XOR) operation; (2) Processing the state using a non-linear byte substitution table (S-Box); (3) Cyclically shifting the last three rows of the state by different offsets; and (4) Taking all of the columns of the state and mixing their data (independently of one another) to produce new columns.
Decryption (inverse cipher) performs a series of transformations using the cipher key to transform the “cipher text” blocks into “plaintext” blocks of the same size. The transformations in the inverse cipher are the inverse of the transformations in the cipher.
The Groestl algorithm transforms the plaintext into cipher text or cipher text into plaintext in 10 or 14 consecutive rounds, with the number of rounds dependent on the length of the key.